package dnsprobe.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;

import javax.swing.JPanel;
 
import org.jfree.chart.ChartFactory;
 import org.jfree.chart.ChartPanel;
 import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
 import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;

public class ChartFrame extends JPanel {

     /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	ChartPanel chartPanel;

	public ChartFrame() {
        
         CategoryDataset dataset = createDataset();
         JFreeChart chart = createChart(dataset);
         chartPanel = new ChartPanel(chart, false);
         chartPanel.setPreferredSize(new Dimension(500, 270));
         this.init();
     

    }
	public void init()
	{
		this.add(chartPanel);
		this.setPreferredSize(new Dimension(500, 270));
		this.repaint();
	}
 
     /**
83:      * Returns a sample dataset.
84:      * 
85:      * @return The dataset.
86:      */
     private static CategoryDataset createDataset() {
        
         // row keys...
        String series1 = "First";
         String series2 = "Second";
         String series3 = "Third";
 
        // column keys...
         String category1 = "Category 1";

 
         // create the dataset...
         DefaultCategoryDataset dataset = new DefaultCategoryDataset();

         dataset.addValue(1.0, series1, category1);

 
        dataset.addValue(5.0, series2, category1);

 
         dataset.addValue(4.0, series3, category1);

         
         return dataset;
         
     }
     

     private static JFreeChart createChart(CategoryDataset dataset) {
        
        // create the chart...
         JFreeChart chart = ChartFactory.createBarChart(
             "Progress Statistics",       // chart title
             "Category",               // domain axis label
             "Value",                  // range axis label
             dataset,                  // data
             PlotOrientation.VERTICAL, // orientation
             true,                     // include legend
             true,                     // tooltips?
             false                     // URLs?
         );
 
         // NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
 
        // set the background color for the chart...
         chart.setBackgroundPaint(Color.LIGHT_GRAY);

         // get a reference to the plot for further customisation...
         CategoryPlot plot = (CategoryPlot) chart.getPlot();


         // ******************************************************************
         //  More than 150 demo applications are included with the JFreeChart
         //  Developer Guide...for more information, see:
         //
         //  >   http://www.object-refinery.com/jfreechart/guide.html
        //
         // ******************************************************************
         
         // set the range axis to display integers only...
         final NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
         rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
 
         // disable bar outlines...
         BarRenderer renderer = (BarRenderer) plot.getRenderer();
         renderer.setDrawBarOutline(false);
         
         // set up gradient paints for series...
        GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, Color.blue, 
                 0.0f, 0.0f, new Color(0, 0, 64));
        GradientPaint gp1 = new GradientPaint(0.0f, 0.0f, Color.green, 
                 0.0f, 0.0f, new Color(0, 64, 0));
         GradientPaint gp2 = new GradientPaint(0.0f, 0.0f, Color.red, 
                 0.0f, 0.0f, new Color(64, 0, 0));
         renderer.setSeriesPaint(0, gp0);
         renderer.setSeriesPaint(1, gp1);
         renderer.setSeriesPaint(2, gp2);

        CategoryAxis domainAxis = plot.getDomainAxis();
         domainAxis.setCategoryLabelPositions(
                 CategoryLabelPositions.createUpRotationLabelPositions(
                         Math.PI / 6.0));
        // OPTIONAL CUSTOMISATION COMPLETED.
        
         return chart;
        
    }
     


 
 }


